package com.exam.api.modules.system.service;

import cn.hutool.core.lang.tree.Tree;
import com.exam.api.common.dto.KeywordDTO;
import com.exam.api.modules.system.domain.TblDept;
import com.exam.api.modules.system.dto.DeptAddDTO;
import com.exam.api.modules.system.dto.DeptIdDTO;
import com.exam.api.modules.system.dto.DeptQueryDTO;
import com.exam.api.modules.system.dto.DeptUpdateDTO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * 部门逻辑接口类
 *
 * @author bcheng
 */
public interface TblDeptService extends IService<TblDept> {

    List<Long> listParentChildDeptIds(Long parentId);

    /**
     * 获取部门树
     *
     * @return 部门树
     */
    List<Tree<Long>> treeDept(KeywordDTO dto);

    /**
     * 列表查询部门
     *
     * @param dto 查询条件
     * @return 列表数据
     */
    List<TblDept> listDept(DeptQueryDTO dto);

    /**
     * 根据部门id查询部门
     *
     * @param dto 部门id
     * @return 部门
     */
    TblDept getDept(DeptIdDTO dto);

    /**
     * 新增部门
     *
     * @param dto 新增部门信息
     */
    void addDept(DeptAddDTO dto);

    /**
     * 修改部门
     *
     * @param dto 修改部门信息
     */
    void updateDept(DeptUpdateDTO dto);

    /**
     * 删除部门
     *
     * @param dto 部门id
     */
    void deleteDept(DeptIdDTO dto);

    Map<Long, String> getNameMapByDeptIds(Collection<Long> deptIds);
}
